﻿#ifndef CPLCITEMBRANCH_H
#define CPLCITEMBRANCH_H

// PLC基础图元： 分支

#include "IPlcBaseItem.h"

class CPlcItemBranch : public IPlcBaseItem
{
    Q_OBJECT
public:
    explicit CPlcItemBranch(const QRectF &rect,
                            const int8_t type,
                            const QString &str,
                            IPlcBaseItem *parent = NULL);
    ~CPlcItemBranch();

    //继承自QGraphicsItem设定绘图边界
    QRectF boundingRect() const override;
    //绘制图元图像函数
    void paint(QPainter *painter,
               const QStyleOptionGraphicsItem *option,
               QWidget *widget = 0) override;

    //获取可选中状态使能
    bool getSelectActiveEnb() override;
    //获取选中状态
    bool getSelectActive() override;
    //设置选中状态
    void setSelectActive(bool status) override;
    //设置信号接通状态
    void setSwitchOn(bool value) override;

    //获取元件类型
    int8_t getItemType() override;

    //获取边界大小
    QRectF getRect() override;
    //设置边界大小
    void setRect(const QRectF &rect) override;

    //获取分支
    IPlcBaseItem *getBranch() override;
    //设置分支
    void setBranch(IPlcBaseItem *item) override;
    //删除分支
    void deleteBranch() override;

signals:
    void variableNumChanged(QString);

private:
    //图元区域范围
    QRectF mRect;
    mutable QRectF mBoundingRect;

    // 缩放比例
    double mdScale;

    int8_t mType;   //元件类型

    QString mVariableNum;   //元件变量编号

    bool mSelectActive;   //元件选中状态
    bool mSwitchOn;       //元件信号接通状态

    IPlcBaseItem *mBranch;   //分支
};
#endif   // CPLCITEMBRANCH_H
